/**
 * \file CTimeEditDelegate.h
 * \author Corentin Le Bail
 * \date 2009-2012
 * \brief Fichier de déclaration de la class CTimeEditDelegate
 */
//------------------------------------------------------------------------------
#ifndef __CTIMEEDITDELEGATE_H__
#define __CTIMEEDITDELEGATE_H__
//------------------------------------------------------------------------------
#include <QItemDelegate>
//------------------------------------------------------------------------------
/**
 * \class CTimeEditDelegate CTimeEditDelegate.h "CTimeEditDelegate.h"
 * \brief Classe d'édition sous forme de QTimeEdit
 */
class CTimeEditDelegate : public QItemDelegate
{
	Q_OBJECT
	public:
		/**
		 * \fn CTimeEditDelegate(QObject *parent=0)
		 * \brief Constructeur
		 * \param[in] parent Référence vers un objet parent
		 */
		CTimeEditDelegate(QObject *parent=0);
		/**
		 * \fn QWidget *createEditor(QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index) const
		 * \param[in] parent Référence vers un objet parent
		 * \param[in] option Option de style
		 * \param[in] index De l'item à éditer
		 * \return La fenêtre utilisé pour éditer l'item spécifié par index
		 */
		QWidget *createEditor(	QWidget *parent, const QStyleOptionViewItem &option,
								const QModelIndex &index) const;
		/**
		 * \fn void setEditorData(QWidget *editor, const QModelIndex &index) const
		 * \brief Affecte les données devent être affiché et edité par l'éditeur
		 * \param[in] editor Référence vers l'objet éditeur
		 * \param[in] index De l'item à éditer
		 */
		void setEditorData(QWidget *editor, const QModelIndex &index) const;
		/**
		 * \fn void setModelData(QWidget *editor, QAbstractItemModel *model, const QModelIndex &index) const
		 * \brief Récupère les données depuis l'éditeur et les stocke dans le model à l'index spécifié
		 * \param[in] editor Référence vers l'objet éditeur
		 * \param[in] model Référence vers l'object model
		 * \param[in] index De l'item à éditer
		 */
		void setModelData(	QWidget *editor, QAbstractItemModel *model,
							const QModelIndex &index) const;
		/**
		 * \fn void updateEditorGeometry(QWidget *editor, const QStyleOptionViewItem &option, const QModelIndex &index) const;
		 * \brief Met à jour l'éditeur en fonction des options
		 * \param[in] editor Référence vers l'objet éditeur
		 * \param[in] option Option de style
		 * \param[in] index De l'item à éditer
		 */
		void updateEditorGeometry(	QWidget *editor,
									const QStyleOptionViewItem &option,
									const QModelIndex &index) const;
};
//------------------------------------------------------------------------------
#endif //__CTIMEEDITDELEGATE_H__
//------------------------------------------------------------------------------